package com.yjd.comm.funds.service;

import java.util.List;
import java.util.Map;

import com.yjd.comm.base.model.PagerModel;
import com.yjd.comm.base.service.IBaseService;
import com.yjd.comm.funds.dto.CanInvestOtherFundsDto;
import com.yjd.comm.funds.model.FundsRewardModel;

/**
 * <b>description</b>：登陆记录业务接口<br>
 * <b>time</b>：2014-12-17 16:06:49 <br>
 * <b>author</b>： lindy lindytem@126.com
 */
public interface IFundsRewardService extends IBaseService {
	/**
	 * 插入
	 * 
	 * @param model
	 * @return
	 * @throws Exception
	 */
	public FundsRewardModel insert(FundsRewardModel model) throws Exception;

	/**
	 * 更新,大于等于1表示成功，其他失败
	 * 
	 * @param model
	 * @return
	 * @throws Exception
	 */
	public int update(FundsRewardModel model) throws Exception;

	/**
	 * 根据id删除,大于等于1表示成功，其他失败
	 * 
	 * @param reward_id
	 * @return
	 * @throws Exception
	 */
	public int delete(Long reward_id) throws Exception;

	/**
	 * 获取用户有效的红包
	 * 
	 * @param validTime
	 *            有效时间
	 * @param lteBalance
	 *            最大金额 ,如果为空表示没有限制
	 * @param user_id
	 *            用户id
	 * @return
	 * @throws Exception
	 */
	public List<FundsRewardModel> getValidRewards(long validTime,
			Double lteBalance, long user_id) throws Exception;

	/**
	 * 更新数据，返回影响的行数
	 * 
	 * @param map
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("rawtypes")
	public int updateByMap(Map map) throws Exception;

	public PagerModel getMyPageModel(Map<String, Object> paramMap)
			throws Exception;

	/**
	 * 获取用户可用于投标的红包信息
	 * 
	 * @param user_id
	 * @return map的key为活动类型，value为每种活动中的资金集合
	 * @throws Exception
	 */
	public Map<Integer, CanInvestOtherFundsDto<FundsRewardModel>> getCanInvestReward(
			Long user_id) throws Exception;
	
	/**
	 * 统计所有红包可用余额总和
	 * @param user_id
	 * @return
	 * @throws Exception
	 */
	public Double getAllRewardAmountSum(Long userId) throws Exception;

}
